package com.itcam.phaselist.list_;

import java.util.ArrayList;

/**
 * 1.ArrayListSource中维护了一个Object类型的数组elementData.<p>
 * transient Object[] elementData; //transient表示瞬间，短暂，表示该属性不会被序列化（序列化即存储在磁盘中）<p>
 * 2.当创建ArrayList对象时，如果使用的是无参构造器，则初始elementData容量为0，第一次添加，则扩容elementData为10<p>
 * 如再次扩容，则扩容elementData为1.5倍<p>
 * 3.如果使用的是指定大小的构造器，则初始elementData容量为指定大小，如需再次扩容，同上<p>
 */

public class ArrayListSource {
    public static void main(String[] args) {
        // 注意，Idea 默认情况下，Debug显示的数据是简化后的，如果希望看到完整的数据,需要做设置.

        // 使用无参构造器创建ArrayList对象
//        ArrayList arrayList = new ArrayList();
        // 使用有参构造器创建ArrayList对象
        ArrayList arrayList = new ArrayList(8);

        for (int i = 0; i < 10; i++) {
            arrayList.add(i);
        }

        for (int i = 11; i <= 15; i++) {
            arrayList.add(i);
        }

        arrayList.add(100);
        arrayList.add(200);
        arrayList.add(null);
    }
}
